/**   
* @Title: ConfigParamsServiceImpl.java 
* @Description: TODO
* @author 6335yz   
* @date  2015年7月28日下午1:38:44
*/
package com.shanghaionstar.sqlite;

import android.content.Context;

import com.onstar.cn.common.util.AssetsUtils;
import com.onstar.cn.sqlite.entities.ConfigParams;
import com.onstar.cn.sqlite.xutil.db.sqlite.Selector;
import com.onstar.cn.sqlite.xutil.db.sqlite.WhereBuilder;
import com.onstar.cn.sqlite.xutil.exception.DbException;

import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import java.util.Set;

/**
 * 
* @ClassName: ConfigParamsServiceImpl 
* @Description: TODO
* @author 6335yz   
* @date 2015年7月28日下午1:38:44
 */
public class ConfigParamsServiceImpl extends BaseSqlImp {


	public ConfigParamsServiceImpl(Context context) {
		super(context);
	}

//	private static class SingelTonConfigParamsService{
//		private static ConfigParamsServiceImpl impl = new ConfigParamsServiceImpl(mContext);
//	}
//
//	public static ConfigParamsServiceImpl getInstance(Context context) {
//		if(mContext == null && context != null) {
//            mContext = context.getApplicationContext();
//		}
//		return SingelTonConfigParamsService.impl;
//	}

	public void load() {
		ConfigParams configParam = new ConfigParams();
		Properties pro;
		try {
			pro = AssetsUtils.loadConfigFromAssets();
			Set<Object> propertySet = pro.keySet();
			Iterator<Object> it = propertySet.iterator();
			while (it.hasNext()) {
				String key = (String) it.next();
				String value = pro.getProperty(key);
				configParam.setParamKey(key.toLowerCase(Locale.CHINA));
				String[] values = value.split("@");
				if(values.length > 2) {
					configParam.setParamValue(values[0]);
					configParam.setParamDesc(values[1]);
					configParam.setFlag(values[2]);
				}else {
					configParam.setParamValue(values[0]);
				}
				mDbUtils.save(configParam);
//				insert(configParam, true);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 
	* @Title: updateByKey 
	* @Description: 更新数据库对应key的value
	* @param @param config    设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void updateByKey(ConfigParams config) {
//		insertOrUpdate(config, "key=?", new String[] { config.getParamKey() });
		try {
			mDbUtils.update(config, WhereBuilder.b("key","=",config.getParamKey()));
		} catch (DbException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 
	 * @Title: updateByKey 
	 * @Description: 更新数据库对应key的value
	 * @param @param config    设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void updateByKey(String  key,String value) {
//		insertOrUpdate(new ConfigParams(), "key=?", new String[] { key });
	}
	/**
	 * 
	* @Title: getConfigParamByKey 
	* @Description: 根据key从数据库取对应的value
	* @param @param key
	* @param @return    设定文件 
	* @return ConfigParams    返回类型 
	* @throws
	 */
	public ConfigParams getConfigParamByKey(String key) {
//		List<ConfigParams> list = getAll(null, " key=? ", new String[] { key.toLowerCase(Locale.CHINA) }, null, null, null, null);
		List<ConfigParams> list = null;
		try {
			list = mDbUtils.findAll(Selector.from(ConfigParams.class).where("key","=",key.toLowerCase(Locale.CHINA)));
		} catch (DbException e) {
			e.printStackTrace();
		}
		if(list != null && list.size() != 0) {
			return list.get(0);
		}else {
			return null;
		}
	}
	/**
	 * 
	* @Title: deleteALl 
	* @Description: 程序退出删除配置表
	* @param     设定文件
	* @return void    返回类型 
	* @throws
	 */
	public void deleteALl() {
//		delete("flag= ? ",new String[]{"0"});
		try {
			mDbUtils.delete(ConfigParams.class,WhereBuilder.b("flag","=","0"));
		} catch (DbException e) {
			e.printStackTrace();
		}
	}

	public void update(ConfigParams params){
		try {
			mDbUtils.update(params);
		} catch (DbException e) {
			e.printStackTrace();
		}
	}

	public void insert(ConfigParams params){
		try {
			mDbUtils.saveBindingId(params);
		} catch (DbException e) {
			e.printStackTrace();
		}
	}
}
